Return Home

Return to Python Projects Page

Top 10 S&P 500 ETF Components¶

In [10]:
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# Define the stock symbols for Top Ten S & P 500 ETF Components
microsoft_symbol = "MSFT"
Apple_symbol = "AAPL"
NVIDIA_symbol = "NVDA"
AMAZON_symbol = "AMZN"
Meta_Platforms_symbol = "GOOGL"
Alphabet_Inc_symbol = "GOOGL"  # Corrected the symbol for Alphabet Inc.
Berkshire_Hathaway_symbol = "BRK.B"
Eli_Lilly_Co_symbol = "LLY"
Broadcom_Inc_symbol = "AVGO"
Tesla_symbol = "TSLA"

# Define the time period for stock price data 
start_date = "2019-01-01"
end_date = "2024-02-27"

# Fetch stock price data using yfinance
microsoft_data = yf.download(microsoft_symbol, start=start_date, end=end_date)
Apple_data = yf.download(Apple_symbol, start=start_date, end=end_date)
NVIDIA_data = yf.download(NVIDIA_symbol, start=start_date, end=end_date)
AMAZON_data = yf.download(AMAZON_symbol, start=start_date, end=end_date)
Meta_Platforms_data = yf.download(Meta_Platforms_symbol, start=start_date, end=end_date)
Alphabet_Inc_data = yf.download(Alphabet_Inc_symbol, start=start_date, end=end_date)
Berkshire_Hathaway_data = yf.download(Berkshire_Hathaway_symbol, start=start_date, end=end_date)
Eli_Lilly_Co_data = yf.download(Eli_Lilly_Co_symbol, start=start_date, end=end_date)
Broadcom_Inc_data = yf.download(Broadcom_Inc_symbol, start=start_date, end=end_date)
Tesla_data = yf.download(Tesla_symbol, start=start_date, end=end_date)

# Extract the 'Close' prices
microsoft_close_prices = microsoft_data['Close']
Apple_close_prices = Apple_data['Close']
NVIDIA_close_prices = NVIDIA_data['Close']
AMAZON_close_prices = AMAZON_data['Close']
Meta_close_prices = Meta_Platforms_data['Close']
Alphabet_close_prices = Alphabet_Inc_data['Close']
Berkshire_Hathaway_close_prices = Berkshire_Hathaway_data['Close']
Eli_Lilly_Co_close_prices = Eli_Lilly_Co_data['Close']
Broadcom_Inc_close_prices = Broadcom_Inc_data['Close']
Tesla_close_prices = Tesla_data['Close']

# Create a DataFrame to store the stock prices
stock_prices_df = pd.DataFrame({
    'Microsoft': microsoft_close_prices,
    'Apple': Apple_close_prices,
    'NVIDIA': NVIDIA_close_prices,
    'Amazon': AMAZON_close_prices,
    'Meta Platforms': Meta_close_prices,
    'Alphabet': Alphabet_close_prices,
    'Berkshire Hathaway': Berkshire_Hathaway_close_prices,
    'Eli Lilly & Co': Eli_Lilly_Co_close_prices,
    'Broadcom Inc': Broadcom_Inc_close_prices,
    'Tesla': Tesla_close_prices
})

# Plot the stock prices
stock_prices_df.plot(title='S&P 500 Stock Prices', ylabel='Stock Price (USD)', xlabel='Date')
plt.show()

# Calculate and display summary statistics
summary_statistics = stock_prices_df.describe()
print(summary_statistics)
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed

1 Failed download:
['BRK.B']: Exception('%ticker%: No timezone found, symbol may be delisted')
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed
[*********************100%%**********************]  1 of 1 completed
         Microsoft        Apple       NVIDIA       Amazon  Meta Platforms  \
count  1296.000000  1296.000000  1296.000000  1296.000000     1296.000000   
mean    241.006466   124.896624   190.755347   128.631064       99.529669   
std      76.411930    47.085332   145.511940    31.302819       30.257085   
min      97.400002    35.547501    31.997499    75.014000       51.273499   
25%     179.117504    78.626249    72.238749    95.871372       70.658003   
50%     245.174995   136.415001   151.120003   128.681999      101.228252   
75%     299.107498   163.477493   243.355003   158.460121      127.610123   
max     420.549988   198.110001   790.919983   186.570496      153.509995   

          Alphabet  Berkshire Hathaway  Eli Lilly & Co  Broadcom Inc  \
count  1296.000000                 0.0     1296.000000   1296.000000   
mean     99.529669                 NaN      264.439028    505.831443   
std      30.257085                 NaN      150.854615    226.235976   
min      51.273499                 NaN      106.790001    167.869995   
25%      70.658003                 NaN      142.367504    313.432503   
50%     101.228252                 NaN      233.134995    476.344986   
75%     127.610123                 NaN      331.072502    590.219986   
max     153.509995                 NaN      782.059998   1309.130005   

             Tesla  
count  1296.000000  
mean    171.888416  
std     106.912122  
min      11.931333  
25%      51.846332  
50%     199.735001  
75%     250.815834  
max     409.970001  
In [ ]: